謎レシピ:TypeScriptSublimeSocketフィルタ書いた


概要

深刻に、やせようと思います。

関係ないけどTypeSciptのオートコンパイル & エラーをコード上に表示 君を書きました。


可能になるのは下記

・編集しながらの適宜ライブコンパイル

・保存に反応してのコンパイル

・エラー表示


やーエラーログ充実させないと辛いわ。

勉強になる。


やせたい。



実際の映像

https://vimeo.com/62707591



材料(ひとりぶん)

Sublime Text 2 :一個

SublimeSocket :一個

node.js :一個

wsモジュール :一個

tailモジュール :一個

TypeScriptソース :適量



レシピ


1.したごしらえ

nodeをインストールします。

最新のでいいんじゃないでしょうか。


TypeScriptをインストールします。

0.8.3でいいんじゃないでしょうか。

参考 http://www.typescriptlang.org


nodeのモジュールのws(WebSocketするやつ)

と、tail(ファイル監視するやつ) も、ここで入れてしまいましょう。

ws https://github.com/einaros/ws

tail https://github.com/forward/node-tail


wsモジュールは、もしかすると、Originを付けない駄目な状態かもしれないので、

その時はこっちを使ってみると良いかもです。

https://github.com/sassembla/ws


Sublime Text 2をインストールします。

長いので以降STと呼びます。

verは2で良いと思います。3の旬はまだ先です。

SublimeText http://www.sublimetext.com

SublimeSocketを下記から落としてSTのpackageフォルダに放り込みます。

ST内にWebSocketサーバ/STのAPIサーバを構築するプラグインです。

長いので以下SSと呼びます。

https://github.com/sassembla/SublimeSocket

TypeScriptのソース

各自入手するなり、自家栽培するなりしてください。

デモで使ったのは、 http://www.typescriptlang.org から持って来たGreeter.tsです。



2.STを起動、SublimeSocketをon

コマンドパレットからsoonとか打てば良いと思います。

正確には、SublimeSocket: on 。


これで、ST内にWebSocketサーバ/STのAPIサーバが立ち上がります。



3.node_tailsocket_typescript.jsをnodeで起動します。

nodeで、TypeScriptのコンパイル環境を立ち上げます。


その際、下記パスを使います。


・コンパイルしたい.tsファイルが置いてあるフォルダのパス

コンパイル対象になる tsファイルの検索条件は、単なる*.tsです。

複数ファイルをいっぺんにコンパイルしてますが、いまんとこ、異なるフォルダ階層のファイルは見に行ってません。

簡単に改造できる筈。


・node_tailsocket_typescript.jsファイルのパス

・tscwithenv.shファイルのパス

SublimeTextのパッケージフォルダ/SublimeSocket/tool/nodeTailSocket/下の下記2ファイル

(別フォルダへの持ち出し可、位置相関なし。 っていうかSTのパスがspaceを含むため持ち出しを強く推奨。)


これらをパラメータとして、nodeで起動します。


node node_tailsocket_typescript.jsファイルのパス tscwithenv.shファイルのパス コンパイルしたい.tsファイルが置いてあるフォルダのパス



SublimeSocketのフォルダパスをそのまま使って、Desktop上のフォルダ tscomp 内の.tsファイルを全部コンパイルしようとすると、

下記のようなコマンドになります。きっと。

node /Users/sassembla/Library/Application\ Support/Sublime\ Text\ 2/Packages/SublimeSocket/tool/nodeTailSocket/node_tailsocket_typescript.js "\"/Users/sassembla/Library/Application Support/Sublime Text 2/Packages/SublimeSocket/tool/nodeTailSocket/tscwithenv.sh\"" /Users/sassembla/Desktop/tscomp


第二引数の "\"/Users/sassembla/Library/Application Support/Sublime Text 2/Packages/SublimeSocket/tool/nodeTailSocket/tscwithenv.sh\"" について、

STのパスがスペースを含んでるクソッタレパスなので、""をつけ、かつ内部でも""がかかってる必要があるためエスケープしておく必要があります。


や、node_tailsocket_typescript.js と tscwithenv.sh を手近などこかにコピーして、平和に実行する事をお勧めします。



5.自家製TypeScriptをお好みで編集!

はっちゃけるところです。

好きに編集してください。

エラーがあれば怒られる筈だし、

編集したり保存したりするタイミングで

勝手にビルドが走ります。

コンパイルログが ・コンパイルしたい.tsファイルが置いてあるフォルダのパス に出力されるのですが、

でけーな邪魔だなーと思ったら手で消してください。

旨い機構とか考えたら自動的に消すとかしたいです。


全体像

・SublimeText内でSublimeSocketを起動、WebSocketを通じてSublimeのAPIを実行可能に。

・nodeで、TypeScriptのコンパイルログを監視、結果をWebSocket経由でSublimeTextに転送。

・SublimeText側でエラーとか行とか内容を取得、表示。

・SublimeText側から、コードの編集や保存をキーに、コンパイルを実行。


ということをやってます。



ところで痩せたいです。運動スルベ。